package fr.dauphine.td3.ctl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import fr.dauphine.td3.bdd.UtilisateurDAO;
import fr.dauphine.td3.emp.Utilisateur;

@Controller
@RequestMapping("administration")	
public class UtilisateursController {
	
	@Autowired
	private UtilisateurDAO utilisateurDAO;
	
	@RequestMapping(params="validation=Ajouter", method=RequestMethod.POST)
	public String ajouter () {
		return "redirect:utilisateur.html?id=-1";
	}
	
	@RequestMapping(params="validation=MajUtilisateur", method=RequestMethod.POST)
	public String majDroitAdmin (@RequestParam(value="majdroit", required=false) String[] majdroit, @RequestParam(value="asupprimer", required=false) String[] asupprimer, ModelMap model) {
		
		if (majdroit == null) {
			utilisateurDAO.desactiverAllDroitAdmin();	
		} else { 
		
			int taille = majdroit.length;
			
			utilisateurDAO.desactiverAllDroitAdmin();
			for (int i=0; i < taille; i++) {
				utilisateurDAO.activerDroitAdmin(utilisateurDAO.get(majdroit[i]));		
			}
		}
		
		if (asupprimer != null) {
			
			System.out.println("mdfjkewjfosajkf");
			
			int taille = asupprimer.length;
			
			for (int i=0; i < taille; i++) {
				
				utilisateurDAO.delete(utilisateurDAO.get(asupprimer[i]));			
			}
		}
		
		return "redirect:administration.html";
	}
	
	@RequestMapping(params="validation=Activer", method=RequestMethod.POST)
	public String activerCompte (@RequestParam(value="asupprimer", required=false) String[] asupprimer, ModelMap model) {
	
		if (asupprimer == null) {
			return "redirect:administration.html";		
		}
		
		int taille = asupprimer.length;
		
		for (int i=0; i < taille; i++) {
			
			utilisateurDAO.activerCompte(utilisateurDAO.get(asupprimer[i]));			
		}
		
		return "redirect:administration.html";
	}
	
	
	@RequestMapping(method=RequestMethod.GET)
	public String affichage( ModelMap model) {
		
		
		
		List<Utilisateur> lstUtilisateur = new ArrayList<Utilisateur>();
		
		try {
			lstUtilisateur = utilisateurDAO.get();
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		model.addAttribute("lstUtilisateur", lstUtilisateur);
		
		return "administration";
	}

}
